home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / string / RCS / strncpy.c,v < prev    next >
Text File  |  1992-03-27  |  3KB  |  161 lines

  1. head     1.3;
  2. branch   ;
  3. access   ;
  4. symbols  sprited:1.2.1;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.3
  10. date     92.03.27.13.30.06;  author rab;  state Exp;
  11. branches ;
  12. next     1.2;
  13.  
  14. 1.2
  15. date     89.03.22.16.07.14;  author rab;  state Exp;
  16. branches 1.2.1.1;
  17. next     1.1;
  18.  
  19. 1.1
  20. date     88.04.25.13.25.50;  author ouster;  state Exp;
  21. branches ;
  22. next     ;
  23.  
  24. 1.2.1.1
  25. date     91.11.23.23.10.02;  author kupfer;  state Exp;
  26. branches ;
  27. next     ;
  28.  
  29.  
  30. desc
  31. @@
  32.  
  33.  
  34. 1.3
  35. log
  36. @A few little optimizations.
  37. @
  38. text
  39. @/* 
  40.  * strncpy.c --
  41.  *
  42.  *    Source code for the "strncpy" library routine.
  43.  *
  44.  * Copyright 1988 Regents of the University of California
  45.  * Permission to use, copy, modify, and distribute this
  46.  * software and its documentation for any purpose and without
  47.  * fee is hereby granted, provided that the above copyright
  48.  * notice appear in all copies.  The University of California
  49.  * makes no representations about the suitability of this
  50.  * software for any purpose.  It is provided "as is" without
  51.  * express or implied warranty.
  52.  */
  53.  
  54. #ifndef lint
  55. static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strncpy.c,v 1.2 89/03/22 16:07:14 rab Exp Locker: rab $ SPRITE (Berkeley)";
  56. #endif /* not lint */
  57.  
  58. #include <string.h>
  59.  
  60. /*
  61.  *----------------------------------------------------------------------
  62.  *
  63.  * strncpy --
  64.  *
  65.  *    Copy exactly numChars characters from src to dst.  If src doesn't
  66.  *    contain exactly numChars characters, then the last characters are
  67.  *    ignored (if src is too long) or filled with zeros (if src
  68.  *    is too short).  If src is too long then dst will not be
  69.  *    null-terminated.
  70.  *
  71.  * Results:
  72.  *    The return value is a pointer to the destination string, dst.
  73.  *
  74.  * Side effects:
  75.  *    None.
  76.  *
  77.  *----------------------------------------------------------------------
  78.  */
  79.  
  80. char *
  81. strncpy(dst, src, numChars)
  82.     register char *src;        /* Place from which to copy. */
  83.     char *dst;            /* Place to store copy. */
  84.     int numChars;        /* Maximum number of characters to copy. */
  85. {
  86.     register char *copy = dst;
  87.  
  88. #ifndef lint    
  89.     while (--numChars >= 0) {
  90.     if ((*copy++ = *src++) == '\0') {
  91.         while (--numChars >= 0) {
  92.         *copy++ = '\0';
  93.         }
  94.         return dst;
  95.     }
  96.     }
  97. #else
  98.     for (; numChars > 0; --numChars) {
  99.     *copy = *src;
  100.     if (*copy == '\0') {
  101.         for (; numChars > 0; --numChars) {
  102.         *++copy = '\0';
  103.         }
  104.         return dst;
  105.     }
  106.     ++copy;
  107.     ++src;
  108.     }
  109. #endif
  110.     return dst;
  111. }
  112.  
  113. @
  114.  
  115.  
  116. 1.2
  117. log
  118. @Added zero fill after end of string.
  119. @
  120. text
  121. @d17 1
  122. a17 1
  123. static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strncpy.c,v 1.1 88/04/25 13:25:50 ouster Exp Locker: rab $ SPRITE (Berkeley)";
  124. d50 1
  125. d59 13
  126. @
  127.  
  128.  
  129. 1.2.1.1
  130. log
  131. @Initial branch for Sprite server.
  132. @
  133. text
  134. @d17 1
  135. a17 1
  136. static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strncpy.c,v 1.2 89/03/22 16:07:14 rab Exp Locker: rab $ SPRITE (Berkeley)";
  137. @
  138.  
  139.  
  140. 1.1
  141. log
  142. @Initial revision
  143. @
  144. text
  145. @d17 2
  146. a18 2
  147. static char rcsid[] = "$Header: proto.c,v 1.2 88/03/11 08:39:08 ouster Exp $ SPRITE (Berkeley)";
  148. #endif not lint
  149. d20 2
  150. d50 7
  151. a56 2
  152.     if (numChars == 0) {
  153.     return dst;
  154. a57 5
  155.     do {
  156.     if ((*copy++ = *src) != 0) {
  157.         src += 1;
  158.     }
  159.     } while (--numChars > 0);
  160. @
  161.